*** Settings ***
Documentation  此文件执行具有鼠标拖动操作，运行中请勿做PC端其他操作
Resource  ../流程层.robot
Suite Setup  进入任务管理页
Suite Teardown  关闭浏览器
Force Tags  回归测试

*** Variables ***
&{taskCreate}  name=单步骤任务  doc=仅添加一个步骤  date=2050-12-25
&{taskEdit}  name=任务编辑  doc=描述编辑

*** Test Cases ***
步骤创建正例
    # 点击创建按钮
    点击元素  xpath=//*[@id="app"]/div/div[2]/div[1]/div/ul/li[2]/button
    # 填写基本信息
    输入文本  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[1]/div[1]/div/div/span/div/input
    ...  ${taskCreate}[name]
    输入文本  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[1]/div[2]/div/div/span/div/input
    ...  ${taskCreate}[doc]
    # 输入通知人
    输入文本  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[2]/div[1]/div/div/span/div/input  ${USERNAME}
    # 选择执行频率
    点击元素  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[3]/div[1]/div/div/div/div/div/input
    点击元素  xpath=/html/body/div[2]/div[1]/div[1]/ul/li[2]/span
    # 时间控件处理,设置临时ID属性
    assign id to element  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[3]/div[2]/div/div/div[1]/input  date1
    # 首先去除时间控件的只读属性
    execute javascript  window.document.getElementById('date1').removeAttribute('readonly')
    # 通过 input text 输入值
    输入文本  id=date1  ${taskCreate}[date]
    # 选择开始时间
    点击元素  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[3]/div[3]/div/div/div/input
    点击元素  xpath=/html/body/div[4]/div[2]/button[2]
    # 选择通知方式，默认选择邮箱，添加企业微信方式
    点击元素  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[2]/div[2]/div/div/div/div/div[1]
    点击元素  xpath=//span[contains(text(),'企业微信')]
    # 选择通知时间，默认步骤失败，添加任务开始、任务结束、步骤成功、步骤失败
    点击元素  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[2]/div[3]/div/div/div[1]/div
    点击元素  xpath=//span[contains(text(),'任务开始')]
    点击元素  xpath=//span[contains(text(),'任务结束')]
    点击元素  xpath=//span[contains(text(),'步骤成功')]
    # 点击空白关闭下拉框
    点击元素  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[2]/div[3]/div/label
    # 拖动存储过程步骤节点到画布中，添加一个存储过程步骤节点
    # 左键点击250,550的元素，将其拖动向右420像素，向下150像素
    mouse drafting  250  550  420  150
    sleep  0.5
    # 点击保存按钮添加步骤节点
    点击元素  xpath=//*[@id="app"]/div/div/div[3]/div[2]/div/div[3]/span/button[2]
    # 鼠标放在开始节点上
    mouse over  xpath=//*[@id="begin"]/div[1]/div[1]
    sleep  0.5
    # 将开始节点连线拖动到添加的步骤节点位置上
    移动到其他元素坐标  xpath=//*[@id="begin"]/div[1]/div[1]/dl/span  xpath=//*[@id="2"]/div[1]/div[1]/dt
    # 鼠标悬停在添加的步骤节点上
    mouse over  xpath=//*[@id="2"]/div[1]/div[1]/dt
    sleep  0.5
    # 拖动连线到结束节点
    移动到其他元素坐标  xpath=//*[@id="2"]/div[1]/div[1]/dl/span[3]  xpath=//*[@id="end"]/div[1]/div[1]
    # 点击提交按钮
    点击元素  xpath=//*[@id="app"]/div/div/div[2]/form/div[2]/div/div/div/div/button[1]
    # 判断提交结果
    wait until element is visible  xpath=/html/body/div[7]/div/div[2]/div[1]/div[2]/p/p[2]
    ${message}  获取文本  xpath=/html/body/div[7]/div/div[2]/div[1]/div[2]/p/p[2]
    should be equal  ${message}  处理成功
    # 点击确认
    点击元素  xpath=/html/body/div[7]/div/div[3]/button
    # 等待元素可见，如果元素出现在任务列表，说明任务成功
    wait until element is visible  xpath=//span[contains(text(),'单步骤任务')]

任务检索流程正例
    # 输入任务名称、描述、选择执行状态
    输入文本  xpath=//div[@class='el-row']//div[1]//div[1]//div[1]//span[1]//div[1]//input[1]  ${taskCreate}[name]
    输入文本  xpath=//div[@class='el-card__body']//div[2]//div[1]//div[1]//span[1]//div[1]//input[1]  ${taskCreate}[doc]
    点击元素  xpath=//*[@id="app"]/div/div[1]/div/div[2]/div/form/div[1]/div[1]/div[3]/div/div/div/div/div[1]/input
    点击元素  xpath=/html/body/div[3]/div[1]/div[1]/ul/li[1]/span
    # 点击检索
    点击元素  xpath=//span[text()='检索']
    # 由元素可见判定检索成功
    wait until element is visible  xpath=//span[contains(text(),'单步骤任务')]

任务启用按钮测试
    [Documentation]  测试启用与停用功能是否正常
    # 点击启用
    点击元素
    ...  xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr/td[7]/div/div/span/div/span[1]
    sleep  0.5
    # 判断确定成功元素是否可见
    element should be visible  xpath=//p[text()='处理成功']
    # 点击确认按钮
    点击元素  xpath=/html/body/div[3]/div/div[3]/button
    # 通过下次执行时间判断启用是否生效
    ${date1}  获取文本
    ...  xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr[1]/td[6]/div/div/span
    # 修复后任务执行时间包含当天，将下方注释部分替换
#    log to console  ${date1}
    should contain  ${date1}  ${taskCreate}[date]
    sleep  0.5
    # 再次点击启用按钮，停用任务
    点击元素  xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr/td[7]/div/div/span/div/span[3]
    # 点击确认
    点击元素  xpath=/html/body/div[3]/div/div[3]/button
    # 判断下次执行时间是否为空
    ${date2}  获取文本  xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr/td[6]
    should be empty  ${date2}

任务编辑流程测试
    # 点击编辑按钮
    点击元素  xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr/td[8]/div/div/span/button[1]
    # 重置按钮功能测试,编辑任务描述，然后点击重置按钮，查看是否恢复编辑前状态
    输入文本  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[1]/div[2]/div/div/span/div/input  ${taskEdit}[doc]
    # 点击重置按钮
    点击元素  xpath=//*[@id="app"]/div/div/div[2]/form/div[2]/div/div/div/div/button[2]
    ${value}  获取值  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[1]/div[2]/div/div/span/div/input
    should be equal  ${value}  ${taskCreate}[doc]
    # 输入编辑任务名称
    输入文本  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[1]/div[1]/div/div/span/div/input  ${taskEdit}[name]
    # 输入编辑任务描述
    输入文本  xpath=//*[@id="app"]/div/div/div[2]/form/div[1]/div[1]/div[2]/div/div/span/div/input  ${taskEdit}[doc]
    # 鼠标放在步骤节点上
    mouse over  xpath=//*[@id="2"]/div[1]/div[1]
    sleep  0.5
    # 点击删除按钮
    点击元素  xpath=//*[@id="2"]/div[1]/div[1]/dl/span[1]
    wait until element is visible  xpath=//p[text()='确定删除？']  5
    # 点击确认按钮
    点击元素  xpath=/html/body/div[2]/div/div[3]/button[2]
    # 将开始和结束节点连线
    mouse over  xpath=//*[@id="begin"]/div[1]/div[1]
    sleep  0.5
    移动到其他元素坐标  xpath=//*[@id="begin"]/div[1]/div[1]/dl/span  xpath=//*[@id="end"]/div[1]/div[1]
    # 点击提交
    点击元素  xpath=//*[@id="app"]/div/div/div[2]/form/div[2]/div/div/div/div/button[1]
    # 等待处理成功元素出现
    wait until element is visible  xpath=//p[text()='处理成功']  5
    # 点击确认
    点击元素  xpath=/html/body/div[2]/div/div[3]/button
    # 文本xpath定位，文本与编辑任务名称一致。判断编辑任务是否成功
    wait until element is visible  xpath=//span[text()='任务编辑']  5
    ${textName}  获取文本  xpath=//span[text()='任务编辑']
    should be equal  ${textName}  ${taskEdit}[name]

执行一次按钮功能测试
    # 输入步骤名称
    输入文本  xpath=//*[@id="app"]/div/div[1]/div/div[2]/div/form/div[1]/div[1]/div[1]/div/div/span/div/input
    ...  ${taskEdit}[name]
    # 点击检索
    点击元素  xpath=//*[@id="app"]/div/div[1]/div/div[2]/span/button[1]
    # 勾选任务
    点击元素  xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr/td[1]/div/label/span/span
    # 点击执行一次按钮
    点击元素  xpath=//*[@id="app"]/div/div[2]/div[1]/div/ul/li[1]/button
    # 处理成功元素出现,说明执行成功
    wait until element is visible  xpath=//p[text()='处理成功']
    # 点击确认
    点击元素  xpath=/html/body/div[2]/div/div[3]/button

删除任务流程测试
    # 点击删除按钮
    点击元素  xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[1]/div[3]/table/tbody/tr/td[8]/div/div/span/button[2]
    # 文本定位判断提示文本是否正确
    wait until element is visible  xpath=//p[text()='确定删除？']  5
    # 点击确定
    点击元素  xpath=/html/body/div[2]/div/div[3]/button[2]
    # 判断删除结果是否成功
    wait until element is visible  xpath=//p[text()='处理成功']  5
    # 点击确认
    点击元素  xpath=/html/body/div[2]/div/div[3]/button
    # 暂无数据元素出现,判断删除成功
    wait until element is visible  xpath=//span[text()='暂无数据']  5